package org.atovio.structure.application;

import org.atovio.structure.adt.Map;
import org.atovio.structure.map.HashMap;
import org.atovio.structure.map.TreeMap;

/**
 * @author AtoVio, Winter Yuan
 * @version 1.0
 */
public class CharCount {

    private CharCount(){}

    /**
     * 统计字符串中各字符出现的次数
     * @param text 需统计的字符串
     * @return 统计结果，一个映射表
     */
    public static Map<String, Integer> charCountByHashMap(String text){
        Map<String, Integer> map = new HashMap<>(12);
        // 逐个字符查找
        for (int i = 0; i < text.length(); i++) {
            String key = text.substring(i, i+1);
            Integer value = map.get(key);
            int count = value == null ? 0 : value;
            map.put(key,count+1);
        }
        return map;
    }

    /**
     * 统计字符串中各字符出现的次数
     * @param text 需统计的字符串
     * @return 统计结果，一个映射表
     */
    public static Map<String, Integer> charCountByTreeMap(String text){
        Map<String, Integer> map = new TreeMap<>();
        // 逐个字符查找
        for (int i = 0; i < text.length(); i++) {
            String key = text.substring(i, i+1);
            Integer value = map.get(key);
            int count = value == null ? 0 : value;
            map.put(key,count+1);
        }
        return map;
    }
}
